In scalable computing environments, such as cloud data centers, which are also known as virtualized systems, applications can be executed in execution environments such as virtual machines that are executed on or over or using physical hardware. Multiple virtual machine instances can be provided, each running the same or different applications or application parts, and the environment can scale the number of virtual machines that are running in order to cope with demand from users for the applications in question.
For example, for a given application, the number of virtual machine instances executing the application can typically be expanded dynamically and elastically so that when load increases another virtual machine instance to service the additional load can be instantiated or spawned. This is called horizontal scalability in that it, virtually, corresponds to adding new machines next to the ones already servicing the load, i.e., expanding horizontally. An application executing in a virtualized system can be composed of multiple parts, each part executing in its own virtual machine.
It typically takes of the order minutes to start up a new virtual machine instance from scratch, and then to load the necessary program modules for an application into it, and thereafter start executing, which can be too long where an increase in load is to be accommodated.